<?php


namespace app\common\service;


use think\Db;

/**
 * 全局单例模式服务类
 * 用于存储全局保留数据
 * 避免多余操作
 * 所有数据key必须在此类中有定义
 * 一般用户在应用结束时将本次写入内容一次性写入数据库或传入队列统一处理
 * Class SingleMoneyDetail
 * @package app\common\single
 */
class SingleService
{

    /**
     * 资金日志存储key
     */
    const MoneyDetailKey = 'money';

    /**
     * 已登录用户大厅第一页返回用户记录
     */
    const SquareUser = 'SquareUser';

    private static $params;

    //私有化构造函数，防止外界实例化对象
    private function __construct()
    {

    }

    //私有化克隆函数，防止外界克隆对象
    private function __clone()
    {

    }



    /**
     * 赋值数据
     * @param string $key
     * @param $params
     * @return void
     */
    public static function set(string $key,$params)
    {
        self::$params[$key]   = $params;
    }

    /**
     * 新增数据
     * @param string $key
     * @param $params
     * @return void
     */
    public static function add(string $key,$params)
    {
        self::$params[$key][] = $params;
    }

    /**
     * 合并赋值
     * @param string $key
     * @param array $params
     * @return void
     */
    public static function merge(string $key,array $params)
    {
        if (!self::$params[$key]){
            return  self::set($key,$params);
        }
        self::$params[$key] = array_merge(self::$params[$key],$params);
    }

    /**
     * 取出数据
     * @param string $key
     * @return mixed
     */
    public static function get(string $key)
    {
        return self::$params[$key];
    }

    /**
     * 取出并删除数据
     * @param string $key
     * @return mixed
     */
    public static function pull(string $key)
    {
        $params = self::$params[$key];

        unset(self::$params[$key]);

        return $params;

    }

    /**
     * 清除所有参数
     */
    public function clear():void
    {
        self::$params = null;
    }


}